<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  const buffer = new ArrayBuffer(16);
  /**
   * 默认从 0 开始读取，长度为buffer的长度
   *
   * view1: {
   *  byteLength: 16
   *  byteOffset: 0
   * }
   */
  const view1 = new DataView(buffer);
  /**
   * 从第 10 位开始读取，长度为 6 位。
   *
   * view2: {
   *  byteLength: 6
   *  byteOffset: 10
   * }
   */
  const view2 = new DataView(buffer, 10, 6);

  // 向 view1 第 11 位赋值 -111
  view1.setInt8(11, -111);
  // 向 view1 第 12 位 赋值 112
  view1.setInt8(12, 112);

  // 向 view2 第 3 位 赋值 113
  view2.setInt8(3, 113);

  /**
   * buffer: {
   *    Int8Array: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 112, 113, 0, 0]
   *    Int16Array: [0, 0, 0, 0, 0, -28416, 29040, 0]
   *    Int32Array: [0, 0, -1862270976, 29040]
   *    Uint8Array: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 112, 113, 0, 0]
   *  }
   *
   */
  console.log(buffer);

  console.log(Int8Array.from(buffer));
  console.log(view1);
  console.log(view2);
</script>
</body>
</html>
